package rubik.mutators;

import java.util.Random;

import rubik.CubeSolution;
import rubik.ICubeSolution;

abstract class AbstractMutator implements ICubeSolutionMutator {

	protected static final Random R = new Random();
	
	@Override
	public ICubeSolution mutate(ICubeSolution sol) {
		
		ICubeSolution newsol = new CubeSolution(sol);
		
		this.mutateSolution(newsol);
		
		return newsol;
	}
	
	protected abstract void mutateSolution(ICubeSolution sol);

}
